// app/utils/utils.go
package utils

import (
	"BlazeRider-backend/config"
	"fmt"
	"math/rand"
	"strconv"
	"strings"
	"time"
)

// GetTeamArr 获取config配置中的team对应的数字
func GetTeamArr() ([]int, error) {
	teamSetString := config.Get().Game.Team
	// 将字符串分割
	strArr := strings.Split(teamSetString, ",") // ["1", "2", "3"]

	// 将team字符串 转换为整型数组
	var intArr []int

	for _, s := range strArr {
		num, err := strconv.Atoi(strings.TrimSpace(s)) // 去除空格并转换
		if err != nil {
			fmt.Printf("转换失败: %s\n", s)
			continue // 跳过无效值
		}
		intArr = append(intArr, num) // 添加到整型数组
	}
	return intArr, nil
}

// GetRandomTeamId 获取config配置中的team中的随机一个id
func GetRandomTeamId() (int, error) {
	teamArr, err := GetTeamArr()
	if err != nil {
		return 0, err
	}
	// 3. 随机选择一个数字
	if len(teamArr) == 0 {
		fmt.Println("配置中的数组为空，无法选择队伍id")
	}

	rand.Seed(time.Now().UnixNano())       // 初始化随机种子
	randomIndex := rand.Intn(len(teamArr)) // 生成随机索引
	track := teamArr[randomIndex]          // 获取随机值
	return track, nil
}

// GetJobArr 获取config配置中的GetJobArr对应的数字
func GetJobArr() ([]int, error) {
	teamSetString := config.Get().Game.Job
	// 将字符串分割
	strArr := strings.Split(teamSetString, ",") // ["1", "2", "3"]

	// 将team字符串 转换为整型数组
	var intArr []int

	for _, s := range strArr {
		num, err := strconv.Atoi(strings.TrimSpace(s)) // 去除空格并转换
		if err != nil {
			fmt.Printf("转换失败: %s\n", s)
			continue // 跳过无效值
		}
		intArr = append(intArr, num) // 添加到整型数组
	}
	return intArr, nil
}

// GetRandomJobId 获取config配置中的job中的随机id
func GetRandomJobId() (int, error) {
	jobArr, err := GetJobArr()
	if err != nil {
		return 0, err
	}
	// 3. 随机选择一个数字
	if len(jobArr) == 0 {
		return 0, nil
	}

	rand.Seed(time.Now().UnixNano())      // 初始化随机种子
	randomIndex := rand.Intn(len(jobArr)) // 生成随机索引
	track := jobArr[randomIndex]          // 获取随机值
	return track, nil
}
